The present invention relates generally to error recovery for encoded speech in a digital communication system, and more specifically, to error recovery for speech signals encoded using adaptive differential pulse code modulation (ADPCM).
Encoders and decoders are commonly employed in communication systems for the purpose of compressing and decompressing speech signals. Adaptive Differential Pulse Code Modulation (ADPCM) describes a form of encoding speech signals in a digital communication system in which compression ratios of 2:1 or even 4:1, with respect to 8-bit compressed PCM samples, can be achieved with relatively low levels of complexity, delay, and speech degradation. In the last few years, this form of encoding has been incorporated into various Personal Communication System (PCS) standards, including the Japanese Personal Handi-Phone System (PHS) and European Digital European Cordless Telecommunications (DECT) standards. It has also become the de facto standard in the United States for the coding of speech in cordless telecommunications systems. The particular form of ADPCM employed in these systems is described in CCITT Recommendation G.726, xe2x80x9c40, 32, 24, 16 kbit/s ADAPTIVE DIFFERENTIAL PULSE CODE MODULATION (ADPCM),xe2x80x9d Geneva, 1990 (hereinafter referred to as xe2x80x9cCCITT Recommendation G.726xe2x80x9d), which is hereby fully incorporated by reference herein as though set forth in full.
A problem arises because this G.726 standard was developed for terrestrial wireline applications, not radio frequency (RF) systems employing dispersive channels, such as the foregoing PHS and DECT cordless systems, and wireless systems, such as digital PCS, in which the channel error rate experienced is typically much greater due to factors such as interference from other users and multipath fading. More specifically, a G.726 ADPCM decoding and encoding system quickly degrades when subjected to such error rates. Consequently, audible xe2x80x9cclicksxe2x80x9d or xe2x80x9cpopsxe2x80x9d occur when speech passing through such a system is played over a speaker. This problem stems from the structure of the G.726 ADPCM encoder and decoder, which will now be explained.
A block diagram of a G.726 compliant encoder is illustrated in FIG. 1. As can be seen, this encoder comprises Input PCM Format Conversion Block 1, Difference Signal Computation Block 2, Adaptive Quantizer 3, Inverse Adaptive Quantizer 4, Reconstructed Signal Calculator 5, Adaptive Predictor 6, Tone And Transition Detector 7, Adaptation Speed Control Block 8, and Quantizer Scale Factor Adaptation Block 9, coupled together as shown. This figure and the following explanation is taken largely from CCITT Recommendation G.726. This encoder receives as input pulse-code modulated (PCM) speech samples, s(k), and provides as output ADPCM samples I(k). In one implementation, in which the mode of transmission is analog transmission, the PCM samples, s(k), are uniform PCM samples. In one example of this implementation, the PCM samples are 14-bit uniform samples which range from xe2x88x928192 to +8191. In this implementation, Block 1 can be eliminated since the PCM samples are already in a uniform format. In another implementation, in which the mode of transmission is digital transmission, the PCM samples are A-law or xcexc-law samples. In one example of this implementation, the PCM samples are compressed 8-bit samples. The output ADPCM samples, I(k), are generated from an adaptively quantized version of the difference signal, d(k), which is the difference between the uniform PCM signal, s1(k), and an estimated signal, se(k), provided by Block 6. In these variables, k is the sampling index. In one embodiment, the sampling interval is 125 xcexcs. A basic assumption is that se(k) can be precisely recreated at the decoder in order to regenerate the speech signal from received values of I(k).
Optional block 1 converts the input signal s(k) from A-law or xcexc-law format to a uniform PCM signal s1(k). Block 2 outputs a difference signal, d(k), equal to s1(k)xe2x88x92se(k). Block 3 is a non-uniform adaptive quantizer used to quantize d(k) using an adaptively quantized scale factor, y(k), output from Block 9. This quantizer operates as follows. First, the input d(k) is normalized using the following equation: log2|d(k)|xe2x88x92y(k). Then, a value for the output I(k)is determined responsive to this normalized input. In one embodiment, in which the output is selected to be at the rate 32 kbit/s, each output value is four bits, three bits for the magnitude and one bit for the sign, specifying one of sixteen quantization levels as determined by the following table:
Block 4 provides a quantized version of the difference signal, dq(k), from I(k) in accordance with the foregoing table. More specifically, through an inverse quantization process, a normalized quantizer output in the rightmost column of the table is selected based on the value of I(k). Then, referring to this value as N.O., dq(k) is determined using the following equation: |dq(k)|=2|N.O.|+y(k), in which N.O. is the normalized quantizer output. Because of quantization error, the signal dq(k) will typically differ from d(k).
Block 9 adaptively computes the scale factor, y(k), in part based on past values of y(k). More specifically, a fast (unlocked) scale factor yu(k) is computed using the following equation: yu(k)=(1xe2x88x922xe2x88x925)y(k)+2xe2x88x925W[I(k)]. For 32 kbit/s ADPCM, the function W[I(k)] is defined as follows:
Thus, higher magnitude values of I(k) are weighted significantly more heavily than lower magnitude values of I(k).
A slow (locked) scale factor yl(k) is derived from yu(k) using the following equation: yl(k)=(1xe2x88x922xe2x88x926)yl(kxe2x88x921)+2xe2x88x926yu(k). The fast and slow scale factors are then combined to form y(k) using the adaptive speed control factor a1(k) provided from Block 8, where 0xe2x89xa6a1(k)xe2x89xa61. The following equation describes the specific relationship between these variables: y(k)=a1(k)yu(kxe2x88x921)+[1xe2x88x92a1(k)]yl(kxe2x88x921).
The parameter a1(k) provided by Block 8 can assume values in the range [0,1]. It tends towards unity for speech signals, and towards zero for voiceband data signals. To compute this parameter, two measures of the average magnitude of I(k), dml(k) and dms(k), are computed using the following equations:
dms(k)=(1xe2x88x922xe2x88x925)dms(kxe2x88x921)+2xe2x88x925F[I(k)]
dml(k)=(1xe2x88x922xe2x88x927)dml(kxe2x88x921)+2xe2x88x927F[I(k)]
For 32 kbit/s ADPCM, F[I(k)] is defined by:
Thus, dms(k) is a relatively short-term average of F[I(k)], and dml(k) is a relatively long-term average of F[I(k)]. Using these two averages, the variable ap(k) is computed. The variable ap(k) tends towards the value of 2 if the difference between dms(k) and dml(k) is large (average magnitude of I(k) changing) and tends towards the value of 0 if the difference is small (average magnitude of I(k) relatively constant). Further details about the computation of ap(k) are contained in the CCITT Recommendation G.726. The parameter ap(kxe2x88x921) is then limited to yield a1(k) in accordance with the following equation:             a      1        ⁡          (      k      )        =      {                                        1            ,                                                            a                  p                                ⁡                                  (                                      k                    -                    1                                    )                                             greater than               1                                                                                                      a                p                            ⁡                              (                                  k                  -                  1                                )                                      ,                                                            a                  p                                ⁡                                  (                                      k                    -                    1                                    )                                            ≤              1                                            }  
The primary function of Adaptive Predictor 6 is to compute the signal estimate se(k) from the quantized difference signal, dq(k), in accordance with the following equations:                               s          e                ⁢                  (          k          )                    =                                                  ∑              2                                      i              =              1                                ⁢                                                    a                i                            ⁢                              (                                  k                  -                  1                                )                                      ⁢                                          s                r                            ⁢                              (                                  k                  -                  i                                )                                                    +                              s            ez                    ⁢                      (            k            )                                ,          xe2x80x83        ⁢    where                      s        ez            ⁡              (        k        )              =                            ∑          6                          i          =          1                    ⁢                                    b            i                    ⁡                      (                          k              -              1                        )                          ⁢                              d            q                    ⁡                      (                          k              -              i                        )                              
The computation of the predictor coefficients, ai and bi, is described in the CCITT Recommendation G.726. As can be seen, the computation includes a sixth order section that models zeroes, and a second order section that models poles, in the input signal. This dual structure accommodates a wide variety of input signals which may be encountered. Note that because se(k) is derived in part from dq(k), quantization error is accounted for in the derivation of se(k).
Block 5 computes the reconstructed signal, sr(k), in accordance with the following equation:
xe2x80x83sr(kxe2x88x92i)=se(kxe2x88x92i)+dq(kxe2x88x92i)
Block 7 provides the variables tr(k) and td(k) responsive to the predictor coefficient a2(k) determined in block 6. The variables tr(k) and td(k) as determined in Block 7 are used in Block 8 for the computation of ap(k), and thus a1(k).
In one embodiment, the input signal, s(k), is a 64 kbit/s A-law or xcexc-law PCM signal, with each sample of s(k) consisting of an 8-bit word. In this embodiment, the output signal, I(k), is a 32 kbit/s signal, representing a compression ration of 2:1. In this embodiment, each sample of I(k) is a 4-bit word, three bits for the magnitude and one for the phase. In another embodiment, the input signal, s(k), is a uniform PCM signal, with each sample of s(k) consisting of a 14-bit word.
A block diagram of a G.726 compliant decoder is illustrated in FIG. 2. As indicated, this decoder comprises Inverse Adaptive Quantizer 10, Reconstructed Signal Calculator 11, Output PCM Format Conversion Block 12, Synchronous Coding Adjustment Block 13, Adaptive Predictor 14, Quantizer Scale Factor Adaptation Block 15, Adaptation Speed Control Block 16, and Tone And Transition Detector 17, coupled together as shown. The input to the decoder is the ADPCM-encoded signal I(k) after transmission over a channel, and the output is sd(k), a signal in PCM format. In one embodiment, in which the ADPCM-encoded signal I(k) is encoded at 32 kbit/s, each sample of I(k), as discussed, is four bits, with three bits representing the magnitude and one bit representing the phase. In one embodiment, the output signal, sd(k), is a uniform PCM signal, with each sample of sd(k) consisting of a 14-bit word.
The function of many of the blocks in FIG. 2 can be described in relation to corresponding blocks in FIG. 1. More specifically, the function of Block 10 in FIG. 2 is identical to that of Block 4 in FIG. 1; the function of Block 11 in FIG. 2 is identical to that of Block 5 in FIG. 1; the function of Block 14 in FIG. 2 is identical to that of Block 3 in FIG. 1; the function of Block 15 in FIG. 2 is identical to that of Block 9 in FIG. 1; the function of Block 16 in FIG. 2 is identical to that of Block 8 in FIG. 1; and the function of Block 17 in FIG. 2 is identical to that of Block 7 in FIG. 1.
Block 12 converts sr(k) to A-law or xcexc-law signal sp(k). In Block 13, A-law or xcexc-law signal sp(k) is first converted to a uniform PCM signal slx(k), and then a difference signal, dx(k), is computed in accordance with the following equation:
dx(k)=slx(k)xe2x88x92se(k)
The difference signal dx(k), is then compared to the ADPCM quantizer decision interval determined by I(k) and y(k). Based on this, the signal sd(k), the output signal the decoder, is determined as follows:             s      d        ⁡          (      k      )        =      {                                                                      s                p                +                            ⁡                              (                k                )                                      ,                                                            d                  x                                ⁡                                  (                  k                  )                                             less than                               lower                ⁢                                  xe2x80x83                                ⁢                boundary                ⁢                                  xe2x80x83                                ⁢                interval                                                                                                                    s                p                -                            ⁡                              (                k                )                                      ,                                                            d                  x                                ⁡                                  (                  k                  )                                            ≥                              upper                ⁢                                  xe2x80x83                                ⁢                boundary                ⁢                                  xe2x80x83                                ⁢                interval                                                                                                                    s                p                            ⁡                              (                k                )                                      ,                          xe2x80x83                        ⁢            otherwise                                }  
where
sp+(k) is the PCM code word that represents the next more positive PCM output level (if sp(k) represents the most positive output level, then sp+(k) is constrained to be sp(k)); and
spxe2x88x92(k) is the PCM code word that represents the next more negative PCM output level (if sp(k) represents the most negative PCM output level, then spxe2x88x92(k) is constrained to be the value sp(k)).
Thus, in the foregoing system, it can be seen that the ADPCM encoded speech is a signal, I(k), the samples of which are the quantization of log2 of the difference signal d(k), equal to the difference between the speech signal s(k) and a predicted speech signal se(k), less a quantizer scale factor y(k), which is adaptively determined based on past samples of I(k). In other words, I(k)=QUANT[log2(d(k))xe2x88x92y(k)]. It is important to note that the scale factor y(k) is subtracted from the log2 form of the difference signal d(k), and thus is best characterized as being in the log2 domain.
At the decoder, the samples I(k) are received after transmission through a channel. Since errors will typically be introduced by the channel, the received samples will typically differ from I(k) as produced by the encoder. Thus, although these samples are still referred to as I(k), it should be understood that they typically differ from I(k) as produced by the encoder.
An attempt is then made in the decoder to recreate the quantizer scale factor y(k) from past values of I(k) as received at the decoder. Because of errors introduced by the channel, the recovered quantizer scale factor, which is also referred to as y(k), may differ from y(k) as determined at the encoder.
Through an inverse quantizer, the decoder then recreates a difference signal dq(k) in accordance with the following equation: dq(k)=2(IQUANT[I(k)+y(k)]. The underlying speech is then recovered by adding the current value of dq(k) to an estimate se(k) of the speech prepared from past values of dq(k) as determined at the decoder.
It should be appreciated from the foregoing that since y(k) is in the log2 domain, any divergence of y(k) from its correct value is magnified exponentially in the reconstructed speech signal, that is, by 2xcex94y(k), where xcex94y(k) refers to the deviation of y(k) from its correct value.
It should also be appreciated that y(k), which is determined from past values of I(k), is heavily and disproportionally influenced by past values of I(k) having a large magnitude. The reason is that, as discussed previously, the fast (unlocked) component of y(k), yu(k), is computed using the following equation: yu(k)=(1xe2x88x922xe2x88x925)y(k)+2xe2x88x925W[I(k)], and the weights W[I(k)] are much greater for large magnitude values of I(k) than for small magnitude values of I(k). By way of example, for 32 kbit/s ADPCM, the function W[I(k)] is defined as follows:
It can be seen that higher magnitude values of I(k) are weighted significantly more heavily in the computation than lower magnitude values of I(k).
With the foregoing as background, the problems encountered through use of an ADPCM encoding and decoding system in a wireless or cordless communications system will now be explained. Errors introduced by the communication channel cause the samples of I(k) being transmitted over the channel to deviate from their correct values. This in turn causes the adaptive scale factor y(k) reconstructed at the decoder to deviate from the value of y(k) as determined at the encoder.
Error-containing samples of I(k) having large magnitudes are particularly problematic because of the disproportionate effect these samples have on the reconstruction of y(k). The large mismatch in y(k) due to these errors is compounded because of the exponential effect mismatches in y(k) have on the difference signal dq(k) determined at the decoder, according to which a mismatch of xcex94y(k) is reflected in dq(k) through the multiplier 2xcex94y(k). These mismatches can and frequently do cause the signal dq(k) as determined at the decoder to deviate significantly from the signal dq(k) as determined at the encoder.
The estimated speech signal, se(k), determined at the decoder in turn is caused to deviate from the signal se(k) as determined at the encoder. The end result is that the reconstructed speech as determined at the decoder in not an accurate estimate of the underlying speech signal at the decoder, and in fact, tends to have much higher energy than this underlying speech. This results in the audible xe2x80x9cclicksxe2x80x9d or xe2x80x9cpopsxe2x80x9d which arise when this reconstructed speech is passed through a speaker.
This problem is particularly pervasive because not only do the channel errors have degrading effects on the portion of the speech decoded roughly contemporaneously with the occurrence of these errors, but, due to the dependence of y(k) on past values of I(k), these errors have effects which propagate over many sample periods. Empirical studies have shown that, during high error conditions, y(k) attains values up to three times higher than the peak values of y(k) attained under zero error conditions, and maintains these high values for long periods of time, rather than reaching a peak and quickly declining as experienced in zero-error conditions. Consequently, these channel errors may impact and even cause the loss of entire frames or packets (typically hundreds of bits) of coded speech.
Various approaches have been proposed for dealing with the problem. According to one approach, various modifications are proposed to the G.726 encoding and decoding algorithms to make them more robust to channel errors. See H. D. Kim and C. K. Un, xe2x80x9cAn ADPCM System With Improved Error Control,xe2x80x9d IEEE Global Telecommunications Conference, San Diego, Calif., Vol. 3, 1983, at 1369, which is incorporated by reference herein as though set forth in full. Since most PCS systems specify that the G.726 standard be followed exactly, this approach is not generally suitable.
Another approach, known as waveform substitution, involves the replacement of error-containing segments with replacement segments determined through various approaches, such as pattern matching or pitch detection or estimation performed on previous segments. See D. Goodman et al., xe2x80x9cWaveform Substitution Techniques for Recovering Missing Speech Segments in Packet Voice Communications,xe2x80x9d IEEE Transactions on Acoustics, Speech, and Signal Processing, Vol. ASSP-34, No. 6, December 1986, at 1440 and K. Yokota et al., xe2x80x9cA New Missing ATM Cell Reconstruction Scheme For ADPCM-Encoded Speech,xe2x80x9d IEEE Global Telecommunications Conference and Exhibition, Dallas, Tex., Vol. 3, 1989, at 1926, which are both incorporated by reference herein as though set forth in full. The problem with these approaches is that, due to their complexity and memory requirements, they are generally too costly for implementation in low-cost and high-volume electronic devices, such as cordless or wireless handsets. Moreover, they do not generally provide acceptable speech quality.
A third approach, described in Riedel, U.S. Pat. No. 5,535,299, Jul. 9, 1996, which is incorporated by reference herein as though set forth in full, involves magnitude limiting or clipping received ADPCM-encoded error-containing speech segments based on threshold comparisons, with clipping performed prior to ADPCM-decoding. A similar approach is described in Schorman, U.S. Pat. No. 5,309,443, May 3, 1994, which is incorporated by reference herein as though set forth in full, in which ADPCM-decoded error-containing speech segments are magnitude-limited or clipped with the degree of clipping determined responsive to the quality of the received segment. The problem with these approaches is that they do not generally provide acceptable speech quality.
A fourth approach, described in O. Nakamura et al., xe2x80x9cImproved ADPCM Voice Transmission for TDMA-TDD Systems,xe2x80x9d 43rd IEEE Vehicular Technology Conference, Secaucus, N.J., 1993, at 301; S. Kubota et al., xe2x80x9cImproved ADPCM Voice Transmission Employing Click Noise Detection Scheme For TDMA-TDD Systems,xe2x80x9d The Fourth International Symposium on Personal, Indoor and Mobile Radio Communications, Yokohama, Japan, 1993, at 1993; K. Enomoto, xe2x80x9cA Very Low Power Consumption ADPCM Voice Codec LSIC for Personal Communication Systems,xe2x80x9d 5th IEEE International Symposium on Personal, Indoor and Mobile Radio Communications, The Hague, The Netherlands, Vol. II, 1994, at 481; and K. Kobayshi, xe2x80x9cHigh-quality Signal Transmission Techniques for Personal Communication Systemsxe2x80x94Novel Coherent Demodulation and ADPCM Voice Transmission with Click Noise Processing,xe2x80x9d IEEE 45th Vehicular Technology Conference,xe2x80x9d Chicago, Ill., 1995, at 733, all of which are hereby incorporated by reference herein as though set forth in full, involves two steps. In the first step, prior to passage through an ADPCM decoder, ADPCM-encoded segments containing errors are detected through cyclic redundancy code (CRC) error detection, and then muted, that is, replaced with zero-difference signals. In the second step, a click noise detector attempts to detect the presence of click noise by monitoring 1) the high frequency content and overflow condition of the PCM signal output from the ADPCM decoder, and 2) the CRC error status of the ADPCM-encoded signal input to the ADPCM decoder. Responsive to the output of the click noise detector, a PCM suppression circuit suppresses the click noise in the PCM signal.
A problem with this approach stems from the complexity of the circuit for detecting the presence of click noise, which makes it generally unsuitable for low-cost and high-volume applications such as cordless or wireless handsets. A second problem relates to the critical threshold comparisons relied on for click noise detection. In order to achieve satisfactory performance, these thresholds must be adaptively determined from the received signal. Yet, no established algorithm has been found applicable for this purpose. A third problem stems from the filtering process which is relied on for click noise detection. Such a filtering process tends to be too time-consuming for general use in ADPCM communications systems due to the real time demands of such a system.
A fifth approach, described in V. Varma et al., xe2x80x9cPerformance of 32 kb/s ADPCM in Frame Erasures,xe2x80x9d IEEE 44th Vehicular Technology Conference, Stockholm, Sweden, 1994, Vol. 2, at 1291, which is hereby incorporated by reference herein as though set forth in full, involves silence substitution, that is, replacing an erroneous frame with a frame at the lowest quantization level. The problem with this approach is that it has been found to actually introduce click noise into the speech signal. Consequently, the speech quality obtained with such an approach has not been considered suitable.
A sixth approach, described in B. Ruiz-Mezcua et al., xe2x80x9cImprovements In The Speech Quality For A DECT System,xe2x80x9d IEEE 47th Vehicular Technology Conference, Phoenix, Ariz., 1997, which is hereby fully incorporated by reference herein as though set forth in full, involves replacing, upon the detection of a channel error condition, an erroneous speech frame by a selected one of 1) the previous speech frame, 2) an attenuated frame, and 3) a comfort noise frame, depending on the status of the channel and the mute algorithm decision. However, this approach is undesirable because of its complexity and because the speech quality which is achieved is not generally considered suitable.
A seventh approach, described in Bolt, U.S. Pat. No. 5,732,356, Mar. 24, 1998, which is hereby incorporated by reference herein as though set forth in full, involves the use of a cyclic buffer to successively store frames of ADPCM-encoded speech, and, upon the detection of an error condition, outputting the stored frames to the ADPCM decoder in the reverse order of their storage. A problem with this approach is that the cost and complexity of the cyclic buffer makes it generally unsuitable for use in low-cost and high-volume electronic devices such as cordless or wireless handsets. A second problem is that the operation of the cyclic buffer is generally too time-consuming for the real time demands of a communications system.
Accordingly, there is a need for an error recovery method and apparatus for ADPCM-encoded speech which is suitable for use in communications systems involving dispersive channels, such as cordless or wireless channels.
There is also a need for an error recovery method and apparatus for ADPCM-encoded speech which is suitable for low-cost and high-volume applications, such as cordless or wireless handsets.
There is further a need for an error recovery method and apparatus for ADPCM-encoded speech which overcomes the disadvantages of the prior art.
Objects and advantages of the subject invention include any of the foregoing, singly or in combination. Further objects and advantages will be apparent to those of skill in the art, or will be set forth in the following disclosure.
In accordance with the purpose of the invention as broadly described herein, there is provided a method and apparatus for reducing the audible xe2x80x9cclicksxe2x80x9d or xe2x80x9cpopsxe2x80x9d which occur when an ADPCM encoding and decoding system is employed in a communications system in which communication occurs over a dispersive channel. A novel technique is employed in which, prior to ADPCM decoding, ADPCM-encoded silence is substituted for error-containing frames, and then, subsequent to ADPCM decoding, post-processed decoded frames are provided to an output while a muting window is open, and decoded frames not subject to the post-processing are provided to the output when the muting window is closed.
In one embodiment, a communications system is provided comprising a plurality of mobile units configured to communicate with corresponding ones of a plurality of base stations or satellites over a dispersive channel, at least one such mobile unit, base station, or satellite including apparatus for performing error recovery of ADPCM-encoded speech frames comprising:
a detector for detecting an error in a ADPCM-encoded speech frame;
an ADPCM decoder for decoding ADPCM-encoded speech frames;
a substitution block for substituting a first predetermined frame for a second ADPCM-encoded frame responsive to the detector detecting an error in the second frame;
a post-processor for post-processing decoded frames;
a muting window generator for opening a muting window responsive to the detector detecting an error in an ADPCM-encoded frame and closing the window after a predetermined number of error-free frames have been received;
an output; and
a switch configured to provide to the output post-processed decoded frames while the muting window is open, and provide to the output decoded frames not subject to or subject to only part of the post-processing while the muting window is closed.
In other embodiments, related apparatus, methods and computer-readable media are provided, such as apparatus, which may be a mobile handset, a receive path in a mobile handset, a base station, a receive path in a base station, a PCS device, an infrastructure component of a communications system, or the like, for performing error recovery of ADPCM-encoded speech frames comprising:
a detector for detecting an error in a ADPCM-encoded speech frame;
an ADPCM decoder for decoding ADPCM-encoded speech frames;
a substitution block for substituting a first predetermined frame for a second ADPCM-encoded frame responsive to the detector detecting an error in the second frame;
a post-processor for post-processing decoded frames;
a muting window generator for opening a muting window responsive to the detector detecting an error in an ADPCM-encoded frame and closing the window after a predetermined number of error-free frames have been received;
an output; and
a switch configured to provide post-processed decoded frames to the output while the muting window is open, and to provide to the output decoded frames not subject to or subject to only part of the post-processing while the muting window is closed.
In one implementation example, the post-processor includes a non-linear processor and a programmable attenuation profiler. In another implementation example, the non-linear processor is a compander, and the programmable attenuation profiler attenuates decoded frames at an attenuation level which starts out at a level less than one, and then progressively rises to a value greater than one, and then progressively decreases to a value of one during the time that the muting window is open.
Other similar methods and apparatus are also provided, including a method for post-processing decoded ADPCM audio frames after an erroneous audio frame has been detected and muted, the method comprising the following steps:
(a) opening a mute window;
(b) providing to an output post-processed decoded frames while the mute window is open;
(c) providing to the output decoded frames not subject to or subject to only part of the post-processing while the mute window is closed; and
(d) closing the mute window after at least one frame subsequent to the erroneous frame has been decoded, post-processed, and provided to the output.
Also included is a method for improving the voice quality of an ADPCM coded signal received by a digital RF receiver comprising the following steps:
(a) generating audio frames of ADPCM code words from said coded signal;
(b) for each said audio frame, detecting whether an error exists in said audio frame;
(c) if an error is detected, muting said frame, decoding said frame with an ADPCM decoder, performing post-processing on the decoded frame and subsequent decoded frames output by said decoder, and supplying said post-processed frames to an output; and
(d) if no error is detected, decoding said frame and supplying said decoded frame to the output.
Further features and advantages of the invention, as well as the structure and operation of particular embodiments of the invention, are described in detail below with reference to the accompanying drawings.